﻿using Prism.Regions;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Zhy.PrismRegion.Base.Views
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        IRegionManager _regionManager;
        public MainWindow(IRegionManager regionManager)
        {
            InitializeComponent();

            // 内容子页面管理对象
            _regionManager = regionManager;
            // 方式一 使用Register的方式向区域内添加子页面
            // 关联内容区域的子页面 - 这个里面的子页面需要再Startup-RegisterTypes方法中提前注册
            regionManager.RegisterViewWithRegion("ViewRegion", "ViewA");
            //regionManager.RegisterViewWithRegion("ViewRegion", "ViewB");

            // 激活内容区域的子页面 - 激活需要页面加载完成才能获取
            this.Loaded += (se, ev) =>
            {
                // 方式二 使用Add方法向区域内添加子页面
                regionManager.AddToRegion("ViewRegion", "ViewB");

                // 获取内容区域的所有子页面
                var region = regionManager.Regions["ViewRegion"];

                // 方式三 使用Add的方式向区域内添加子页面
                // 第二个参数是用来给子页面设置别名的 - 可以在搜索时获取到子页面对象
                region.Add(new ViewC(), "ViewC"); // 这种添加方式没有走容器，可以不用提前注册

                // 获取指定名称的子页面
                var view = region.Views.FirstOrDefault(v => v.GetType().Name == "ViewB");
                // 激活指定名称的子页面 - 激活后页面显示
                region.Activate(view);
            };
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // 显示A
            var region = _regionManager.Regions["ViewRegion"];
            //var view = region.Views.FirstOrDefault(v => v.GetType().Name == "ViewA");
            var view = region.Views.FirstOrDefault(v => v.GetType().Name == (sender as Button).Tag.ToString());
            region.Activate(view);
        }

        //private void Button_Click_1(object sender, RoutedEventArgs e)
        //{
        //    // 显示B
        //    var region = _regionManager.Regions["ViewRegion"];
        //    var view = region.Views.FirstOrDefault(v => v.GetType().Name == "ViewB");
        //    region.Activate(view);
        //}
    }
}